# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Transcoder.V1beta1.Model.PreprocessingConfig do
  @moduledoc """
  Preprocessing configurations.

  ## Attributes

  *   `audio` (*type:* `GoogleApi.Transcoder.V1beta1.Model.Audio.t`, *default:* `nil`) - Audio preprocessing configuration.
  *   `color` (*type:* `GoogleApi.Transcoder.V1beta1.Model.Color.t`, *default:* `nil`) - Color preprocessing configuration.
  *   `crop` (*type:* `GoogleApi.Transcoder.V1beta1.Model.Crop.t`, *default:* `nil`) - Specify the video cropping configuration.
  *   `deblock` (*type:* `GoogleApi.Transcoder.V1beta1.Model.Deblock.t`, *default:* `nil`) - Deblock preprocessing configuration.
  *   `denoise` (*type:* `GoogleApi.Transcoder.V1beta1.Model.Denoise.t`, *default:* `nil`) - Denoise preprocessing configuration.
  *   `pad` (*type:* `GoogleApi.Transcoder.V1beta1.Model.Pad.t`, *default:* `nil`) - Specify the video pad filter configuration.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :audio => GoogleApi.Transcoder.V1beta1.Model.Audio.t() | nil,
          :color => GoogleApi.Transcoder.V1beta1.Model.Color.t() | nil,
          :crop => GoogleApi.Transcoder.V1beta1.Model.Crop.t() | nil,
          :deblock => GoogleApi.Transcoder.V1beta1.Model.Deblock.t() | nil,
          :denoise => GoogleApi.Transcoder.V1beta1.Model.Denoise.t() | nil,
          :pad => GoogleApi.Transcoder.V1beta1.Model.Pad.t() | nil
        }

  field(:audio, as: GoogleApi.Transcoder.V1beta1.Model.Audio)
  field(:color, as: GoogleApi.Transcoder.V1beta1.Model.Color)
  field(:crop, as: GoogleApi.Transcoder.V1beta1.Model.Crop)
  field(:deblock, as: GoogleApi.Transcoder.V1beta1.Model.Deblock)
  field(:denoise, as: GoogleApi.Transcoder.V1beta1.Model.Denoise)
  field(:pad, as: GoogleApi.Transcoder.V1beta1.Model.Pad)
end

defimpl Poison.Decoder, for: GoogleApi.Transcoder.V1beta1.Model.PreprocessingConfig do
  def decode(value, options) do
    GoogleApi.Transcoder.V1beta1.Model.PreprocessingConfig.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Transcoder.V1beta1.Model.PreprocessingConfig do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
